//
//  JQLiveTools.h
//  JQLive
//
//  Created by Bruce on 2019/12/11.
//  Copyright © 2019 mlqk. All rights reserved.
//

#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>
@class PHAsset;

NS_ASSUME_NONNULL_BEGIN
///添加好友来源
typedef NS_ENUM(NSInteger,AddFriendSource_Type){
    
    AddSource_Type_PHONE = 1, //通过手机号添加，
    AddSource_Type_MYIAOYIN,  //通过秒音号添加，
    AddSource_Type_SCAN,      //通过扫一扫添加
    AddSource_Type_Near,      //附近的人添加
    AddSource_Type_GROUP,     //通过群聊添加
    AddSource_Type_CARD,      //通过名片分享添加
};
extern NSString * NSStringFromAddFriendSource_Type(AddFriendSource_Type state);//用于上传数据等
extern NSString * ShowUIFromAddFriendSource_Type(NSString *state);//UI展示
//
typedef NS_ENUM(NSInteger, SystemAuthorities) {
    
    Authority_Video = 0,     //相机
    Authority_Library,       //相册
    Authority_Microphone,    //麦克风
    Authority_Location,      //地理位置
    Authority_AddressBook    //通讯录
};

/// 动态发布类型选择
typedef NS_ENUM(NSUInteger, Moments_Type) {
    /// 其他类型
    Moments_Type_Other = 0,
    /// 文本类型
    Moments_Type_Text = 1,
    /// 图片类型
    Moments_Type_Image = 2,
    /// 视频类型
    Moments_Type_Video =3,
};
/**
 消息type类型
 */
typedef NS_ENUM(NSUInteger, MYMessageType) {
    /*
     点赞类型消息
     */
    MYMessageType_Like = 1,
    /*
     关注类型消息
     */
    MYMessageType_Focus = 2,
    /*
    评论消息
    */
    MYMessageType_Comment = 3,
    /*
      活动通知消息
      */
    MYMessageType_Activity = 4,
    /*
      订单通知消息
      */
    MYMessageType_Order = 5,
    /*
      商场通知消息
      */
    MYMessageType_Shop = 6,
    /*
      系统通知消息
      */
    MYMessageType_System = 7,
    
};

/**
 二维码type类型
 */
typedef NS_ENUM(NSUInteger, MYQrCodeType) {
    /*
     用户类型
     */
    MYQrCodeTypeUSer = 1000,
    /*
     群组类型
     */
    MYQrCodeTypeGroup = 1001,
    /*
     收款码类型
     */
    MYQrCodeTypeMoneyRecive = 1002,
    /*
     邀请码类型，用来直接绑定邀请码的
     */
    MYQrCodeTypeInvite = 1003,
};
/// 红包种类
typedef NS_ENUM (NSInteger,PacketType){
    SendRedPacketType_Person = 0,//个人红包
    SendRedPacketType_Group = 1, //群组红包
    SendRedPacketType_Other = 2  //其它红包
};
///红包货币类型
typedef NS_ENUM(NSUInteger, RedPacketCoinType) {
    RedPacketCoinType_RMB = 0,  //人民币
    RedPacketCoinType_MYC = 1 ,//MYC币
};

/**
 分享消息类型
 @code /
 
 ///商品
 MYGeneralShareTypeProduct               = 10000,
 ///店铺
 MYGeneralShareTypeStore                 = 10001,
 ///个人名片
 MYGeneralShareTypeCardOfSingle          = 10002,
 ///群二维码
 MYGeneralShareTypeGroupQRCode           = 10003,
 ///动态
 MYGeneralShareTypeDynamic               = 10004,
 ///广告
 MYGeneralShareTypeAdvertising           = 10005,
  
 @endcode
 */
typedef NS_ENUM (NSInteger,MYGeneralShareType){
    ///商品
    MYGeneralShareTypeProduct                = 10000,
    ///店铺
    MYGeneralShareTypeStore                  = 10001,
    ///个人名片
    MYGeneralShareTypeCardOfSingle           = 10002,
//    ///群二维码
//    MYGeneralShareTypeGroupQRCode           = 10003,
    ///动态
    MYGeneralShareTypeDynamic                = 10003,
    ///广告
    MYGeneralShareTypeAdvertising            = 10004,
    ///图片
    MYGeneralShareTypeImage                  = 10005,
    ///视频
    MYGeneralShareTypeVideo                  = 10006,
    ///直播
    MYGeneralShareTypeLiveRoom               = 10007,
    //短视频
    MYGeneralShareTypeLiveVideo              = 10008,
    
};

/**
 分享类目
 @code ///好友/群组
 MYShareTypeGroup        = 10000,
 ///朋友圈
 MYShareTypeFriendCircle ,
 ///微信好友
 MYShareTypeFriend      ,
 ///QQ
 MYShareTypeQQ          ,
 ///QQ空间
 MYShareTypeQzone         ,
 ///新浪微博
 MYShareTypeWeibo        ,
 ///复制链接
 MYShareTypeCopyLink    ,
 ///删除
 MYShareTypeDelete      ,
 ///投诉
 MYShareTypeComplain     ,
 ///权限设置
 MYShareTypePermissionSetting    ,
 
 @endcode
 */
typedef NS_ENUM(NSInteger, MYShareType)
{
    ///好友/群组
    MYShareTypeGroup        = 10000,
    ///朋友圈
    MYShareTypeFriendCircle ,
    ///微信好友
    MYShareTypeFriend      ,
    ///QQ
    MYShareTypeQQ          ,
    ///QQ空间
    MYShareTypeQzone         ,
    ///新浪微博
    MYShareTypeWeibo        ,
    ///复制链接
    MYShareTypeCopyLink    ,
    ///删除
    MYShareTypeDelete      ,
    ///投诉
    MYShareTypeComplain     ,
    ///不感兴趣
    MYShareTypeDontLike    ,
    ///权限设置
    MYShareTypePermissionSetting    ,
};
/**
 收藏类型
 @code ///商品类型
 MYCollectionType_Goods = 2,
 ///店铺类型
 MYCollectionType_Shop = 1,
 ///图片类型
 MYCollectionType_Image = 3,
 ///视频类型
 MYCollectionType_Video = 4,
 ///文件类型
 MYCollectionType_File= 5,
 ///链接类型
 MYCollectionType_Link = 6,
 
 @endcode
 */
typedef NS_ENUM (NSInteger,MYCollectionType){
    ///商品类型
    MYCollectionType_Goods = 2,
    ///店铺类型
    MYCollectionType_Shop = 1,
    ///图片类型
    MYCollectionType_Image = 3,
    ///视频类型
    MYCollectionType_Video = 4,
    ///文件类型
    MYCollectionType_File= 5,
    ///链接类型
    MYCollectionType_Link = 6,
};

//搜索历史类型
typedef NS_ENUM(NSInteger, MYSearchHistoryType)
{
    ///搜索商品
    MYSearchHistoryTypeProduct    = 10000,
    ///搜索店铺
    MYSearchHistoryTypeStore      = 10001,
};

//抢购状态
typedef NS_ENUM(NSInteger, MYFlashSaleType)
{
    ///已开始、抢购中
    MYFlashSaleTypeStart      = 10000,
    ///即将开抢
    MYFlashSaleTypeNoStart    = 10001,
};

//商品类型
typedef NS_ENUM(NSInteger, MYProductDetailType)
{
    ///普通商品
    MYProductDetailTypeOrdinary         = 0,
    ///首单商品
    MYProductDetailTypeFirstOrder       = 10001,
    ///特价商品
    MYProductDetailTypeSpecialOffer     = 10002,
    ///抢购商品
    MYProductDetailTypeFlashSale        = 10003,
};
/**
直播消息type类型
*/
typedef NS_ENUM(NSUInteger, MYLiveMessageType) {
    /*
     点赞类型消息
     */
    MYLiveMessageType_Like = 1,
    /*
    评论消息
    */
    MYLiveMessageType_Comment = 2,
    /*
    打赏消息
    */
    MYLiveMessageType_Reward = 3,
    /*
    关注类型消息
    */
    MYLiveMessageType_Focus = 4,
    /*
    直播动态通知消息
    */
    MYLiveMessageType_LiveDynamic = 5,
    /*
    短视频动态通知消息
    */
    MYLiveMessageType_VideoDynamic = 6,

    
};
/// 秒音工具类
@interface JQLiveTools : NSObject
#pragma mark - 退出登录

/// 退出登录
+ (void)logout;

#pragma mark - appdelegate

/// 登录设置刷新rootVC
+ (void)setFreashRootVc;
+ (void)setFreashRootVc2;

#pragma mark - UIAlertController

/// 弹框
/// @param title 标题
/// @param message 内容
/// @param style 弹窗类型
/// @param actionTitles action标题数组
/// @param actionStyles  actions类型
/// @param target  调用者
/// @param handlers 回调
+ (void)alertWithTitle:(NSString *__nullable)title
     message:(NSString *__nullable)message
       style:(UIAlertControllerStyle)style
actionTitles:(NSArray *)actionTitles
actionStyles:(NSArray *)actionStyles
      target:(UIViewController *)target
    handlers:(void(^)(NSInteger index))handlers;
#pragma mark - 关于数据转化的一些操作

/// 银行卡转星号
/// @param string 银行卡
+ (NSString *)groupedBankString:(NSString *)string;
/// 证件数字转化星号
/// @param idNum 证件号码
+ (NSString *)idCardSuitScanf:(NSString *)idNum;
/**
 隐藏手机号中间几位为星号
 
 @param telNumber 手机号
 @return 返回隐藏为星号 的手机号
 */
+ (NSString *)numberSuitScanf:(NSString *)telNumber;

/**
 *  字典转为字符串，主要用于地址拼接
 *
 *  @param paramsDic 传值字典
 *
 *  @return 字符串
 */
+ (NSString *)parseDictionaryToFormattedString:(NSDictionary *)paramsDic;

/**
 *  json 转字典
 *
 *  @param jsonString json
 *
 *  @return 字典
 */
+ (NSDictionary *)dictionaryWithJsonString:(NSString *)jsonString;
/**
 *  data 转字典
 *
 *  @param data data
 *
 *  @return 字典
 */
+ (NSDictionary *)dictionaryWithData:(NSData *)data;
/// 字典转data
/// @param dict 字典
+ (NSData *)dictionaryToJsonData:(NSDictionary *)dict;

/**
 *  字典 转 json
 *
 *  @param dic 字典
 *
 *  @return json
 */
+ (NSString*)dictionaryToJson:(NSDictionary *)dic;

/**
 数组转json

 @param array 数组
 @return json
 */
+ (NSString*)arrayToJson:(NSArray *)array;


/**
 *  URLEncode
 */
+ (NSString *)URLEncodedString:(NSString *)tempString;

/**
 字符串转MD5

 @param string 字符串
 @return MD5值
 */
+ (NSString *)stringToMD5:(NSString *)string;

/// 时间转化成倒计时
/// @param str 时间字符串
+ (NSString *)compareCurrentTime:(NSString *)str;

/// 距离转成
/// @param distance 距离
+ (NSString *)getDistanceString:(float)distance;
#pragma mark - 时间相关处理

/// 获取当前月份
/// @param dataString 时间字符串
+ (NSString *)getMonthWithDateString:(NSString *)dataString;

/// 判断两个时间是否是同一个月
/// @param time1 时间1
/// @param time2 时间2
+ (BOOL)isInSameMonth:(NSString *)time1 time2:(NSString *)time2;

#pragma mark - 关于界面切换跳转

/// 跳转指定界面
/// @param vcName 跳转界面类名
/// @param currentVc 当前VC（可以为空，为空自动获取当前VC）
/// @param params 附带参数
+ (void)pushVCName:(NSString *)vcName
         currentVc:(nullable UIViewController *)currentVc
            params:(nullable NSDictionary*)params;
/**
 返回多层
 
 @param count 层数
 @param navigationController 导航栏控制
 @param viewController 当前vc

 */
+ (void)navBackToCount:(NSInteger)count navigationController:(UINavigationController *)navigationController viewController:(UIViewController *)viewController;

#pragma mark - 搜索

+ (BOOL)isContains:(NSString *)firstString withString:(NSString *)secondString;
/**
 *  汉字转拼音
 *
 *  @param hanZi 汉字
 *
 *  @return 转换后的拼音
 */
+ (NSString *)hanZiToPinYinWithString:(NSString *)hanZi;
#pragma mark - 关于系统权限问题

/**
 *  判断有无权限
 */
+ (BOOL)judgeAuthorization:(SystemAuthorities)systemAuthorities;
//

#pragma mark - 视频处理

/**
 获得视频信息
 */
+ (NSMutableDictionary *)getVideoInfoWith:(PHAsset *)videoAsset;

/**
 将视频转换为mp4格式
 */
+(void)convertVideoToMP4Format:(PHAsset *)videoAsset Compelete:(void(^)(NSURL *fileUrl))fileUrlHandler;
/// 通过phasset获取封面
/// @param asset phasset
/// @param resultBack block
+ (void)getVideoImageFromPHAsset:(PHAsset *)asset Complete:(void (^)(UIImage *image))resultBack;

//#pragma mark - NIM云信相关方法
//
//+ (NSString *)f:(NIMLoginClientType)clientType;

#pragma mark - 手势处理

/// 创建手势密码
+ (void)creatGesturePassword;
/// 删除手势密码
+ (void)deleteGesturePassword;
/// 验证手势密码
/// @param isForced 是否强制比对
+ (void)configGesturePassword:(BOOL)isForced;

/// 标记进入后台时间，方便统计是否应该弹出手势框
/// @param isLock 是否是锁屏状态
+ (void)markEnterBackgroundDate:(BOOL)isLock;

/// 清空手势时间
+ (void)cleanEnterBackgroundDate;


#pragma mark - 其他

/// 为当前控制器禁用👉右滑返回手势
/// @param VC <#VC description#>
+ (void)popGestureClose:(UIViewController *)VC;

/// 为当前控制器开启👉右滑返回手势
/// @param VC <#VC description#>
+ (void)popGestureOpen:(UIViewController *)VC;

/// 判断字符串是否为空
/// @param string 字符串
+ (BOOL)isBlankString:(NSString *)string;

/// 获取银行卡icon名字
/// @param bankString 银行卡名字
+ (NSString *)getBankICon:(NSString *)bankString;
/// 获取银行卡背景图片名字
/// @param bankString 银行卡名字
+ (NSString *)getBankBackImag:(NSString *)bankString;
/**
 获取当前VC
 */
+ (UIViewController *)currentVC;

/// 设备token
//+ (NSData *)deviceToken;
/// 根据字符串生成高清二维码图片
/// @param codeString 二维码json字符串
/// @param size 二维码大小
+ (UIImage *)QRImage:(NSString *)codeString
              toSize:(CGSize)size;
/**
 生成高清图片(目前主要用在生成二维码哪里)
 
 @param codeString 生成二维码的内容
 @param centerImage 中间logo
 @return image

 */
+ (UIImage *)createNonInterpolatedUIImageFormCodeString:(NSString *)codeString withCenterImage:(UIImage *)centerImage;

/// 当前时间
+ (NSString *)currentDateString:(NSString *)format;

/// 添加登录日志
+ (void)addLoginLog;

/// 去设置支付密码
+ (void)toSetUpPayPassword:(UIViewController *)vc;


/// 更新礼物plist
/// @param giftArray 礼物数组
+ (void)updateLiveGiftPlist:(NSArray *)giftArray;
/// 获取礼物数组
+ (NSArray *)getLiveGiftPlist;

/// 检测消息文本，反垃圾处理
///// @param message 消息文本
//+ (NIMMessage *)checkNimMssage:(NIMMessage *)message;
/// 检测消息文本，反垃圾处理
/// @param messageStr 内容
+ (NSString *)checkWithMessage:(NSString *)messageStr;


+ (NSString*)md5:(NSString *)source;
+ (NSString*)getMD5WithData:(NSData *)data;
@end

NS_ASSUME_NONNULL_END
